<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <!-- コンテナをロード -->
  <script type="text/javascript" src="../src/container.js" ></script>
</head>
<body>
  <div id="stdout"></div>
  <script type="text/javascript">
var stdout = document.getElementById( "stdout" );

// クラス
function Kitten() {}
Kitten.prototype = {
   getName: function () { return this.name; }
};
Kitten.prototype.meta ={
    "@Container": {
        // 名前
        "@Name": "mii",
        // インジェクション
        "@Inject":{
            "name" : "foo"
        },
       //初期化関数・破棄関数
        "@Initialize": function( obj, container ) {
            stdout.innerHTML += obj.name + " is initialized.<br/>";
        },
        "@Destroy": function( obj, container ) {
            stdout.innerHTML += obj.name + " is destroyed.<br/>";
        },
        // スコープ
        "@Scope": container.Scope.Singleton,
        // インターセプタ
        "@Intercept": [
            [ function( mi ){ return mi.proceed() + " intercept1! "; }, container.any() ],
            [ function( mi ){ return mi.proceed() + " intercept2! "; }, new container.Matcher( /get.*/ ) ]
        ]
    }
}

// コンテナを作成。
var c = new container.Container( function( binder ) {
  binder.bind( Kitten );
});

// コンテナからコンポーネントを取得する。
var mii = c.get( "mii" );
var name = mii.getName() + "<br/>";
stdout.innerHTML += name;

c.destroy();

  </script>
</body>
</html>